package cn.iocoder.yudao.module.brokerage.level.pojo.po;

import cn.iocoder.yudao.framework.business.basic.pojo.bo.TemplateParameter;
import cn.iocoder.yudao.framework.business.basic.pojo.po.BaseEntity;
import cn.iocoder.yudao.module.api.brokerage.level.enums.BrokerageLevelTypeEnum;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;

import java.util.List;

/**
 * <pre>
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 *  推广人员等级 DO
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * </pre>
 *
 * @author 山野羡民（1032694760@qq.com）
 * @since 2025/01/17
 */
@Data
@TableName(value = "brokerage_level", autoResultMap = true)
//@KeySequence("brokerage_level_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
public class BrokerageLevelDO extends BaseEntity {

    /**
     * 类型：0-普通用户、1-会员、2-招商人员、3-商家
     *
     * @see BrokerageLevelTypeEnum
     */
    private Integer type;

    /**
     * 名称，如会员等级：普通会员、黑铁会员、青铜会员、白银会员、黄金会员、铂金会员
     */
    private String name;

    /**
     * 权重，值越大等级越高
     */
    private Integer weight;

    /**
     * 说明
     */
    private String introduction;

    /**
     * 升级方式：0-不自动升级、1-满足任意条件、2-满足全部条件
     */
    @Deprecated
    private Integer upWay;

    /**
     * 升级配置，JSON格式，如：[{"name":"付费50元购买","key":"buy_price","value":"5000"},{"name":"累计贡献值","key":"total_growth","value":"100"}]
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    @Deprecated
    private List<TemplateParameter> config;
    /**
     * 升级配置，格式化给前端展示
     */
    @TableField(exist = false)
    @Deprecated
    private List<String> configFormat;

    @SuppressWarnings("unused")
    public List<String> getConfigFormat() {
        return TemplateParameter.formatValues(getConfig());
    }

    /**
     * 权益配置，JSON数组，如：[{"name":"享受直推会员费的10%","key":"buy_vip_father_percent","value":"10"}]
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<TemplateParameter> benefits;
    /**
     * 权益配置，格式化给前端展示
     */
    @TableField(exist = false)
    private List<String> benefitsFormat;

    @SuppressWarnings("unused")
    public List<String> getBenefitsFormat() {
        return TemplateParameter.formatValues(getBenefits());
    }

}